From a0cc4ba202a39f23085b367904a4c9a9684b4954 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Sun, 8 May 2005 11:12:14 +0000 Subject: [PATCH] bitkeeper revision 1.1389.5.34 (427df40e93QBBJSf6UjtUfrHOApBXA) Fix process destruction: we should clear the LDT before calling destroy_context(). Signed-off-by: Keir Fraser --- linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c | 1 + linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c index e3a588e029..b571bd6aaf 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c @@ -361,6 +361,7 @@ static void __init pagetable_init (void) make_page_writable(old_pgd); __flush_tlb_all(); free_bootmem(__pa(old_pgd), PAGE_SIZE); + init_mm.context.pinned = 1; kernel_physical_mapping_init(pgd_base); remap_numa_kva(); diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c index 59399cceff..0215422a5a 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -480,7 +481,6 @@ void mm_unpin(struct mm_struct *mm) void _arch_exit_mmap(struct mm_struct *mm) { - unsigned int cpu = smp_processor_id(); struct task_struct *tsk = current; task_lock(tsk); @@ -494,9 +494,7 @@ void _arch_exit_mmap(struct mm_struct *mm) tsk->active_mm = &init_mm; atomic_inc(&init_mm.mm_count); - cpu_set(cpu, init_mm.cpu_vm_mask); - load_cr3(swapper_pg_dir); - cpu_clear(cpu, mm->cpu_vm_mask); + switch_mm(mm, &init_mm, tsk); atomic_dec(&mm->mm_count); BUG_ON(atomic_read(&mm->mm_count) == 0); -- 2.30.2